package com.example.serviceapplication;

import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.ServiceConnection;
import android.database.Cursor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Environment;
import android.os.IBinder;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;

public class MusicActivity extends AppCompatActivity {
    ArrayList<File>musicFiles;//mp3文件
    MusicService.MusicAgency musicAgency;//音乐代理人
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music);
        //绑定服务
        Intent intent=new Intent(this,MusicService.class);
        bindService(intent, new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
                //当应用和服务进行绑定的时候，调用服务的onBind方法，提供一个中间人对象
                //作为参数IBinder iBinder---服务提供的中间人
                if (musicAgency==null) {
                    musicAgency = (MusicService.MusicAgency) iBinder;
                }
            }

            @Override
            public void onServiceDisconnected(ComponentName componentName) {

            }
        }, BIND_AUTO_CREATE);



        ListView lvMusic= (ListView) findViewById(R.id.lv_music);
        //sd卡音乐媒体文件的Uri
        Uri sdUri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        //内存的媒体文件的Uri
        Uri memUri=MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
        //内容解析者
        ContentResolver resolver=getContentResolver();
        Cursor cursor=resolver.query(memUri,new String[]{"_data"},null,null,null);
        musicFiles=new ArrayList<>();
        while (cursor.moveToNext()){
            String path=cursor.getString(0);//结果集中只保留了一个_data字段
            File file=new File(path);
            musicFiles.add(file);
        }
        cursor.close();



        //通过内容解析者对象，解析这个Uri
        ContentResolver resolver1=getContentResolver();
        Cursor cursor1=resolver.query(sdUri,null,null,null,null);
        //从结果集中，找到_data字段的值（文件路径），封装成File，添加到列表

        while (cursor1.moveToNext()){
            String path=cursor1.getString(cursor1.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
            File file=new File(path);
            musicFiles.add(file);
        }
        cursor1.close();



        /*


        //准备数据,mp3文件
        //sd卡的Music路径下
        File dir=new File(Environment.getExternalStorageDirectory()+"/Music");
        //listFiles获取目录下的所有文件，
        //设置文件过滤器，筛选出目录下mp3文件
        //文件过滤器中accept方法，接收的文件类型，返回true，不接收的返回false
        musicFiles=dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File file) {
                if (file.getName().endsWith("mp3")){
                    return true;
                }
                return false;//不是mp3文件
            }
        });//Music目录下的所有文件,筛选出mp3文件
        */
        //适配器
        lvMusic.setAdapter(new BaseAdapter() {
            @Override
            public int getCount() {
                return musicFiles.size();//数据的总数
            }
            @Override
            public Object getItem(int i) {
                return null;
            }

            @Override
            public long getItemId(int i) {
                return 0;
            }

            @Override
            public View getView(final int i, View contentView, ViewGroup viewGroup) {
//                TextView info=new TextView(getApplicationContext());
//                info.setText(musicFiles[i].getName());
                View view=View.inflate(getApplicationContext(),R.layout.list_item,null);
                TextView tvInfo= (TextView) view.findViewById(R.id.tv_list_item_info);
                tvInfo.setText(musicFiles.get(i).getName());
                Button btnPlay= (Button) view.findViewById(R.id.btn_list_item_play);
                Button btnStop= (Button) view.findViewById(R.id.btn_list_item_stop);
                btnPlay.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //MusicUtils.playMusic(musicFiles[i].getAbsolutePath());//调用工具类的方法播放音乐
                        musicAgency.paly(musicFiles.get(i).getAbsolutePath());//通过代理人，调用服务的方法播放音乐
                    }
                });
                btnStop.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //MusicUtils.stopMusic();
                        musicAgency.stop();//通过代理人，调用服务的方法停止播放音乐
                    }
                });
                return view;
            }
        });




        //播放音乐，
        //音乐文件，sd卡
//        String path= Environment.getExternalStorageDirectory()+"/Music/周云蓬 - 山鬼.mp3";
//        MusicUtils.playMusic(path);



    }
}
